home *** CD-ROM | disk | FTP | other *** search
/ TeX 1995 July / TeX CD-ROM July 1995 (Disc 1)(Walnut Creek)(1995).ISO / dviware / dvi2pcl / globals.h < prev    next >
C/C++ Source or Header  |  1992-11-24  |  7KB  |  273 lines

  1. /* $Log:    globals.h,v $
  2.  * Revision 0.8  92/11/23  19:47:02  19:47:02  bt (Bo Thide')
  3.  * Fixed resolution bug. Portable downloading. Added/changed options. PJXL color support
  4.  * 
  5.  * Revision 0.7  92/11/13  02:41:17  02:41:17  bt (Bo Thide')
  6.  * More bug fixes and improvements. Support for PaintJet XL
  7.  * 
  8.  * Revision 0.6  92/11/10  21:48:43  21:48:43  bt (Bo Thide')
  9.  * Bug fixes. Added -R option. Better font handling.
  10.  * 
  11.  * Revision 0.5  92/11/09  16:25:50  16:25:50  bt (Bo Thide')
  12.  * Rewrite of dospecial.c. Extended \special support
  13.  * 
  14.  * Revision 0.4  92/11/08  02:46:06  02:46:06  bt (Bo Thide')
  15.  * Changed to portable bit manipulations. Replaced strrstr for non-POSIX compliant C. Fixed numerous bugs. Added support for more \special's.
  16.  * 
  17.  * Revision 0.3  92/08/24  12:43:17  12:43:17  bt (Bo Thide')
  18.  * Fixed 8 bit (dc font) support.
  19.  * 
  20.  * Revision 0.2  92/08/23  17:28:53  17:28:53  bt (Bo Thide')
  21.  * Source cleaned up.  Changed certain function calls.  Removed globals.
  22.  * 
  23.  * Revision 0.1  92/08/22  23:58:47  23:58:47  bt (Bo Thide')
  24.  * First Release.
  25.  *
  26.  */
  27.  
  28. #ifndef _DVI2PCL_GLOBALS_INCLUDED
  29. #define _DVI2PCL_GLOBALS_INCLUDED
  30.  
  31. #define BANNER "TeX Dvi to HP Print Command Language translator dvi2pcl 0.7.\n"
  32. #define BITFILE_SUFFIX         ".pcl"    /* Bit file suffix */
  33. #define BLACKBYTE        '\377'
  34. #define DEV_LJPLUS        0
  35. #define DEV_LJ2            1
  36. #define DEV_LJ2D        2
  37. #define DEV_LJ2P        3
  38. #define DEV_LJ3SI            4
  39. #define DEV_LJ3P            5
  40. #define DEV_PJ            10
  41. #define DEV_PJXL            11
  42. #define DVIFILE_SUFFIX        ".dvi"    /* Dvi file suffix */
  43. #define DYNAMICFONTBASE        256    /* Start value for internal font #'s */
  44. #define FALSE            0
  45. #define FIX            (1 << 20)
  46. #define FMASK            7
  47. #define FONTPATH        "/%dpt/%s.%d"    /* Where to look for fonts */
  48. #define HOFFSET            200    
  49. #define INFINITY        0x7FFFFFFF
  50. #define MAXCHEIGHT        128    /* Max character height for printer */
  51. #define MAXCWIDTH        128    /* Max character width for printer */
  52. #define MAXDOWN            128    /* Max number of downloadable fonts */
  53. #define MAXDRIFT        2    /* Max dots rounding error */
  54. #define MAXFONTS        256    /* Max # of fonts to be used */
  55. #define MAXPAGES        1000    /* Max # of pages of the document */
  56. #define MAXPKSIZE        65536    /* Max .pk buffer size */
  57. #define MAXPXLSIZE        65536    /* Max .pxl buffer size */
  58. #define MINPRINTERMEM        122880    /* 120 KByte */
  59. #define NAMELENGTH        255    /* Max length of file names */
  60. #define NAMESIZE        4096    /* Max texbtuffer size for names */
  61. #define NULL            0
  62. #define PCLLEVEL        4    /* Default PCL level (old LaserJets) */
  63. #define PRESCAN_OFF        0    /* Not in the prescan cycle */
  64. #define PRESCAN_ON        1    /* In the prescan cycle */
  65. #define RESOLUTION        300
  66. #define SCALE             75780587.52        /* 72.27*2**20 */
  67. #define STACKSIZE        100
  68. #define TERMLINELENGTH        80
  69. #define TRUE            1
  70. #define USGFILE_SUFFIX        ".usg"        /* Usage (log) file suffix */
  71. #define VOFFSET             150
  72. #define WHITEBYTE        '\0'
  73.  
  74.  
  75. /* Global type definitions */
  76.  
  77. typedef char        byte;
  78. typedef unsigned char    ubyte;
  79. typedef unsigned char    bool;
  80.  
  81. #ifdef TRUE
  82. #include <sys/types.h>
  83. #else
  84. typedef unsigned short    ushort;
  85. typedef unsigned int    uint;
  86. #endif /* TRUE */
  87.  
  88. /* PCL font descriptor */
  89. typedef struct {
  90.     ushort size;
  91.     ubyte  descriptor;
  92.         ubyte  font_type;
  93.         ubyte  style_MSB;
  94.         byte   reserved;
  95.         ushort baseline;
  96.         ushort cell_width;
  97.         ushort cell_height;
  98.         ubyte  orientation;
  99.     bool   spacing;
  100.         ushort symbol_set;
  101.         ushort pitch;
  102.         ushort height;
  103.         ushort x_height;
  104.     byte   width_type;    
  105.         ubyte  style_LSB;
  106.         byte   stroke_weight;
  107.         ubyte  typeface_LSB;
  108.         ubyte  typeface_MSB;
  109.         ubyte  serif_style;
  110.         ubyte  quality;
  111.         byte   placement;
  112.         byte   underl_dist;
  113.         ubyte  underl_height;
  114.         ushort text_height;
  115.         ushort text_width;
  116.         ushort first_code;
  117.         ushort last_code;
  118.         ubyte  pitch_ext;
  119.         ubyte  height_ext;
  120.         ushort cap_height;
  121.     uint   font_number;
  122.     char   font_name[16];
  123.       } fdfmt;
  124.  
  125. /* PCL character descriptor */
  126. typedef struct {
  127.         ubyte  format;
  128.         bool   continuation;
  129.         ubyte  size;
  130.         ubyte  class;
  131.     ubyte  orientation;
  132.     byte   reserved;
  133.         short  left_offset;
  134.         short  top_offset;
  135.         ushort char_width;
  136.         ushort char_height;
  137.         short  delta_x;
  138.       } cdfmt;
  139.  
  140. /* Internal character information */
  141. typedef struct {
  142.     short pk_char;
  143.         long  pxl_width;
  144.         long  tfm_width;
  145.         long  use_count;
  146.       } charfmt;
  147.  
  148. /* Internal font information */
  149. typedef struct {
  150.     long    checksum;
  151.         long    scaled_size;
  152.         long    design_size;
  153.         long    space;
  154.         short    dir_size;
  155.     double    height;
  156.         short    down;
  157.         short    name; 
  158.     short    bc;
  159.     short    ec;
  160.         charfmt    chr[256];
  161.       } fontfmt;
  162.  
  163. /* Internal graphic char information */
  164. typedef struct {
  165.     short pxl_bytes;
  166.     short pxl_rows;
  167.     long x_offset;
  168.     long y_offset;
  169.     byte *pxl_pattern;
  170.     } gcharfmt;
  171.  
  172. typedef gcharfmt (*gfontfmt)[256];    /* Internal graphic font information */
  173.  
  174. /* Header part of .tfm files */
  175. typedef struct {
  176.     short lf;
  177.     short lh;
  178.     short bc;
  179.     short ec;
  180.     short nw;
  181.     short nh;
  182.     short nd;
  183.     short ni;
  184.     short nl;
  185.     short nk;
  186.     short ne;
  187.     short np;
  188.     long  cs;
  189.     long  ds;
  190.     } tfmfmt;
  191.  
  192. /* Printer name and capabilities */
  193. typedef struct {
  194.     long mem;
  195.     char name[16];
  196.     char lang[8];
  197.     } prtfmt;
  198.  
  199. /* Global variables in alphabetical order */
  200. int        actualpagecount;
  201. cdfmt        cd;            /* character descriptor */
  202. charfmt        *cbase;
  203. double        conv;
  204. double        convpxl;
  205. double        convtfm;
  206. long        count[10];
  207. int        c_black;
  208. int        c_flag;
  209. int        c_height;
  210. int        c_hoffset;
  211. int        c_nib;
  212. int        c_voffset;
  213. int        c_width;
  214. long        denominator;
  215. charfmt        *drawchar();
  216. int        dyn_f;
  217. byte        *endofchardata;
  218. int        e_offset;
  219. fdfmt        fd;            /* font descriptor */
  220. long        firstpage;
  221. long        firstpar();
  222. fontfmt        *font;
  223. int        fontpathlen;
  224. fontfmt        *fontptr[MAXFONTS];
  225. gfontfmt    gfont;
  226. gfontfmt    gfontptr[MAXFONTS];
  227. bool        inpostamble;
  228. long        h_offset;
  229. bool        h_posed;
  230. int        landscape;
  231. long        lastpage;
  232. long        magnification;
  233. int        manualfeed;
  234. long        maxh;
  235. int        maxs;
  236. long        maxv;
  237. long        maxhsofar;
  238. int        maxssofar;
  239. long        maxvsofar;
  240. int        maxpages;
  241. int        max_depth;
  242. int        max_width;
  243. int        max_offset;
  244. char        names[NAMESIZE];
  245. int        nextfontdown;
  246. char        *nextnamesfree;
  247. long        numerator;
  248. int        o_offset;
  249. short        outreverse;
  250. byte        *pkbase;
  251. long        pkbuffer[MAXPKSIZE];
  252. byte        *pkcharinfo();
  253. char        pkfixname[NAMELENGTH];
  254. char        pkname[NAMELENGTH];
  255. byte        *pk_ptr;
  256. long        power[8];
  257. long        prevpage;
  258. prtfmt        printer;
  259. long        printermem_used;
  260. byte        pxlbuffer[MAXPXLSIZE];
  261. int        r_offset;
  262. int        s;
  263. long        startcount[10];
  264. int        startthere[10];
  265. int        startvals;
  266. long        v_offset;
  267. bool        v_posed;
  268. bool        verbose;
  269.  
  270. long        h, v, w, x, y, z;
  271.  
  272. #endif /* _DVI2PCL_GLOBALS_INCLUDED */
  273.